package com.ruoyi.boc.service;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.ruoyi.boc.domain.BocLakeImport;
import com.ruoyi.boc.domain.BocLakeTable;

import javax.servlet.http.HttpServletResponse;

/**
 * 入湖生成业务Service接口
 * 
 * @author ruoyi
 * @date 2025-02-14
 */
public interface IBocLakeTableService 
{
    /**
     * 查询入湖生成业务
     * 
     * @param tableId 入湖生成业务主键
     * @return 入湖生成业务
     */
    public BocLakeTable selectBocLakeTableByTableId(Long tableId);

    /**
     * 查询入湖生成业务列表
     * 
     * @param bocLakeTable 入湖生成业务
     * @return 入湖生成业务集合
     */
    public List<BocLakeTable> selectBocLakeTableList(BocLakeTable bocLakeTable);

    /**
     * 新增入湖生成业务
     * 
     * @param bocLakeTable 入湖生成业务
     * @return 结果
     */
    public int insertBocLakeTable(BocLakeTable bocLakeTable);

    /**
     * 修改入湖生成业务
     * 
     * @param bocLakeTable 入湖生成业务
     * @return 结果
     */
    public int updateBocLakeTable(BocLakeTable bocLakeTable);

    /**
     * 批量删除入湖生成业务
     * 
     * @param tableIds 需要删除的入湖生成业务主键集合
     * @return 结果
     */
    public int deleteBocLakeTableByTableIds(Long[] tableIds);

    /**
     * 删除入湖生成业务信息
     * 
     * @param tableId 入湖生成业务主键
     * @return 结果
     */
    public int deleteBocLakeTableByTableId(Long tableId);

    /**
     * 查询据库列表
     *
     * @param bocLakeTable 业务信息
     * @return 数据库表集合
     */
    public List<BocLakeTable> selectGbaseTableList(BocLakeTable bocLakeTable);

    /**
     * 查询据库列表
     *
     * @param tableNames 表名称组
     * @return 数据库表集合
     */
    public List<BocLakeTable> selectGbaseTableListByNames(String[] tableNames);

    /**
     * 导入表结构
     *
     * @param tableList 导入表列表
     */
    public void importGbaseTable(List<BocLakeTable> tableList);

    /**
     * 批量生成代码（下载方式）
     *
     * @param tableId 表
     * @return 数据
     */
    public void downloadLakeCode(HttpServletResponse response, long tableId) throws IOException;


    /**
     * 批量生成代码（下载方式）
     *
     * @param tableNames 表数组
     * @return 数据
     */
    public byte[] downloadLakeCode(Long[] tableNames);

    /**
     * 获取表字段名称
     *
     * @param tableName 表数组
     * @return 数据
     */
    public LinkedList<String> selectLakeTableColumnsByName(String tableName);

    /**
     * 同步数据库
     *
     * @param tableName 表名称
     */
    public void synchGbaseDb(String tableName);

    /**
     * 预览代码
     *
     * @param tableId 表编号
     * @return 预览数据列表
     */
    public String previewLakeCode(Long tableId);

    /**
     * 导入用户数据
     *
     * @param bocLakeImportList 用户数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importBocLakeData(List<BocLakeImport> bocLakeImportList, Boolean isUpdateSupport, String operName);

    /**
     * 根据表名删除数据
     *
     * @param tableName 表数组
     * @return 数据
     */
    public int deleteBocLakeTableByTableName(String tableName);
}
